How to ship an MVP a quick as possible using the course methodology? Which lessons to watch?
Outline
- 00:00 — Introduction
- 00:48 — Mental Models
- 02:02 — Developer Workflow
- 03:55 — Clarity on Theoretical Guesses
- 05:55 — Testing Strategy
About
As of November 5, 2023 (November 5th), with me still building out the rest of the content, here’s what I’d recommend.
Key points
- Become aware of what will lead to success and common pitfalls
- Understand the Systems Thinking approach to software development
- You want to approach work from a Value-First perspective — this is a strategic approach
- Particular attention to The Ideal Developer Workflow
- Building an MVP’s first important steps are outlined w/ the Ideal Developer Workflow
- In sequence:
-
First start by identifying the theoretical guesses
-
Biggest decision you make will be your testing strategy
- EX: E2e + Unit Testing
- Ex: Contract Testing + High Value Integration Testing
-
Broad stroke architecture + build, test & deploy a vertical slide as a Walking Skeleton
-
Continue to implement your first User Stories as acceptance tests w/ a testable architecture
-
Which modules to watch first (at this current stage)?
I’ll refine this roadmap as we launch the rest of the content, but here’s what I currently recommend.
- Watch The Metaphysics (mental models) to learn the main mental models
- The Theoretical Guess Points (Problem, Solution, Architecture) for more detail on how we can identify the theoretical guesses
- Learn the basics of writing tests in BP-First
- Learn about testing strategies
- Customer & Developer Tests
- you need some tests which validate correctness for the customer (ie: an acceptance test)
- Outer Loop
- and you need tests which test the internals for the developer (ie: unit, incoming, outgoing, contract tests)
- Inner Loop
- Example configurations
- E2E Tests to acceptance test your features from the outside + High Value Unit Tests to verify things work properly internally
- High Value Integration Tests to acceptance test your features from the outside + Contract Tests to verify incoming API contracts (REST, GraphQL) and outgoing adapters (dbs, caches, etc) things work properly
- you need some tests which validate correctness for the customer (ie: an acceptance test)
- your goal is to select the configuration of tests which give you the most CONFIDENCE given your TIME and EFFORT constraints
- you can learn about these here…
- and you can watch me set up the outer loop — acceptance testing infrastructure in BP-First
- Customer & Developer Tests
Full Transcript
If I wanted to ship an MVP a quick as possible using the essentialist methodology and I already have fleshed out designs, what sections of the course would you watch first
[00:00:00]
What's going on, crafters? Khalil here, and I see Aaron has a great question. Aaron's come back to the course after some time, and he's asking, how do I best go through the content in order to figure out how to ship the MVP as quick as possible using the Software Essentialist methodology? So he says he already has the designs fleshed out, which sections of the course would you recommend to watch first?
So first of all, Aaron, thank you for being a part of the community. Thanks for Jumping in here very early when it's been super rough. It's getting a ton better now. awesome to have you in here. I put together a little thing here just to piece together my thoughts. So as of today, as of what is currently in there, here's what I would recommend.
So number one, the most important thing is to know the mental models. And those are pretty much gonna [00:01:00] act as, like landmines and the opposite of landmines. So we want to move towards using the mental models, which means that I would recommend for you to watch the metaphysics. It's not that long. I believe I think these modules are relatively short.
So I would recommend going through these at least watching the 12 essentials because these are foundational for everything that we're going to do. And if you understand them at a high level, you're going to know what it is you should avoid and what it is you should move towards. So I'd recommend watching those.
And then this one here, the skills, the ideal developer workflow, this thing is going to be incredibly important as you move forward, because this pieces together the ideal based on everything I've learned from the experts, so the gro Steve Freeman, growing object oriented software, got it by tests, continuous delivery, everyone know, clean architecture, piecing these things together, domain driven design, [00:02:00] BDD, experts of have pieced, experts have of created this ideal developer workflow where you.
So if you're starting with an MVP, And those steps are going to be the same regardless of if you're shipping an MVP, or you're going to be developing a new feature on an existing product. The only thing that's really going to change is how much time you have on your side and how much effort you're willing to put in, and the quality of the work that you're doing.
So if you're starting with an MVP, and let's say it's not yet validated Well, then you just really need to ship and see if you can get some solid answers on your theoretical guesses. So that would mean you can get some customers, you can get people using your app, and you now have a solid answer on, hey, this is something that's actually valuable.
So that means it's not incredibly important for you to do a ton of testing. It's not incredibly important for you to be doing things of the [00:03:00] utmost high quality. But. It's still good to do things on a good foundation of guesses. So this whole aspect of guesses and guessing and things that's, of course, the feedback loop, which is one of the main theoretical, metaphysical essentials.
And we break everything into theoretical and physical. with respect to shipping and MVP, I could talk about the theoretical aspect first, and I could talk about the physical aspect. and what's in the middle of that, which is your testing strategy. So let's go from the theoretical first and I'll show you the exact modules I would recommend down here.
But just to finish this off, it's very important that we of follow this ideal developer workflow because it's going to be the same as I said, regardless of the type of project in whatever context. But yeah, it's just the, amount of effort we're going to use at each step is going to be a little bit different based on where we are.
So first we want to make sure we have clarity on the theoretical guesses. And that's going to mean, in terms of systems thinking, your problem, [00:04:00] solution architecture guess points. So that means do you have clarity on what the problem is? Do you have clarity on how you're going to solve the problem? Do you have like in with respect to solving the problem?
Do you know the boundaries you're going to be drawing around the different domains that are going to have to come together to solve the problem? This is where it's a good idea for you to use things like domain driven design to do a domain driven techniques such as process modeling for you to identify the boundaries for let's say one or two users stories that you're most interested in developing out initially, so I'll show you where to do that.
It's going to be in the theoretical guest points. I'll show you. That's where we're going to be learning about that. so that's going to be the problem. Guest point of the architecture. Guest point. Admittedly, there's not a whole lot of content in there just yet. However, I could give you a high level of it and just explain what really matters.
We actually do talk about that a little bit in [00:05:00] the strategic design theoretical essential here, but that's going to be much more fleshed out when we get to the architecture, guess, point around here because this section is, yeah, definitely not structured out yet. But what's important to make note of at that point is what are the patterns you want to use?
What are the tools you're going to use? It's about making the decisions on The actual architectural components that you're going to use to piece together and develop out your software. Once you get clarity on all of that, the next thing to do is to decide on a testing strategy. Now, we've talked about testing strategies in a number of different Q& As all throughout the course thus far, so of scattered throughout, throughout these areas and also through some discussions.
So this is a module that I still need to develop out is just showing you all of the testing strategies. However, that is something that we talk about at more detail once we get to value first. Because, actually I think I have a video there so you can check that one out. And that might be this one I have up [00:06:00] here, pretty much right there.
But, the testing strategy is very important. It's, it needs to accomplish a couple of things. In particular, you need to accomplish having tests that validate This is what the customer wants, so that's going to mean you take a user story and you turn your user story into tests, and those tests are going to be acceptance tests, and we also call those outer loop tests, and then to complement that, we're going to need to validate some of the internals, some of the technical aspects of your implementation, and those are going to be inner loop tests, and those tests are going to be more developer focused, so there's going to be unit tests, incoming, outgoing, contract tests, Now, you don't need to use all of these, right? But, this is what is, this is where the strategy aspect is involved. So, of give you my recommendation for an MVP, what I would probably do uh, if I was to build this out. [00:07:00] my recommendation is, first of all, this is called the walking skeleton essential. So, you'll learn about that when you, um, you get into the walking skeleton. essential here. The walking skeleton means you draw out the architecture. You have clarity on all the patterns you're gonna use, and you have clarity on how you're gonna architect it. You draw it all out. Then what you do is you want to build out a vertical slice of functionality. So you'll take one of your user stories, build out a vertical slice of functionality that cuts all the way to the database.
So if it's front end some from you, I all the way to the database. You're going to have to decide for yourself. How am I going to structure this project all sorts of decisions and in best practice. First, we actually do a lot of project structuring and I believe down here. So acceptance testing a walking skeleton from UI to DB, right?
So these are some of the more involved modules here where I'll actually demonstrate this live. so those are good ones to [00:08:00] watch. But You want to build this out and then actually go ahead and deploy it, right? Deploy this walking skeleton. This is going to messy task. because you're going to have to do a fair amount of scripting, a fair amount of setting all sorts of things up.
So expect for that to take a little bit of time. But it's really important because you're developing out your initial testing strategy, which is going to enable you to do both of those two types of tests for the entirety of your product. So the tests that I recommend doing, for, let's say, an MVP, I think it's always good to start with some, you could do either end to end tests or you could do a high value integration test.
What's happened in the course is I've actually demonstrated how to do the high value. I'm sorry. I've demonstrated how to do the end to end tests in the best practice. first module here, but coming later in pattern. First, I want to show you how to do something called high value integration [00:09:00] testing.
And I believe I talked about this in this video here, which is this one there as well. We do cover that and some of the other ones too. There's different strategies you can use. but I think you want to have, you definitely want to have some sort of test that is going to be an acceptance test that's going to validate correctness for the customer.
And then you're going to want a configuration of tests that are going to validate the internals. So how to learn that stuff, I would say, go through some of these resources here. These are some discussions. And these are some videos, this front end architecture to q& a, Has been reportedly very useful to a number of developers in the community.
So let me just even click on that. Let's see, where does that take us? Yeah, this is a good one. So we, yeah, there's a lot in here. There's like builders and how to use those and how to piece things together. How to use an application interface. so this of like a shortcut to a lot of what we [00:10:00] are going to get to in a more outlined structured way.
So I would ask you to ask questions when you get confused or you need some more assistance in the chat just so I can assist you while the course content isn't quite covering all the gaps just yet. so far that's what I would recommend. So I'll put this in the description of the video, this little guide here.
But just to summarize, go through the mental models to learn the mental models. For the course, and then you want to go through the theoretical guest points to make sure you have clarity on what those are. At the very least, take a look at the theoretical guest points themselves and see how they all map in like inputs and outputs.
So you can make sure you have a checklist of what it is you should be looking for. There's also something called the abstraction prism, which I talked about in the abstraction video. You could take that and use that as your road map to knowing if you have everything you need in order to move into doing code.
This is also just BDD. [00:11:00] Then, if you're not familiar with writing tests, in best practice first we do some basics in, in testing. I think you might be familiar with writing tests already. And then, yes, of course the testing strategies. there's a number of videos that I mentioned you could take a look at, uh, to see how those go. but out of all of those, I'd probably recommend at this current time to watch end to end acceptance testing just to understand how to get acceptance tests written and to see how to acceptance test an entire walking skeleton from the UI to the database, I think really good. There's a Q and a in there as well.
That's cool. So I hope that's helpful so far. definitely feel free to ask me any more questions if you have more questions. But where I'm at right now, I'm just, let's get the rest of this shipped out so that we could actually walk through this in the content instead of me having to outline it like this.
All right, so with that being said, I'll leave the video right there. Thanks for the question. I'll see you in there. As always, to mastery


golden knowledge!